package com.wyix.service;

import com.wyix.entity.AirConditioner;
import com.wyix.entity.Appliance;
import com.wyix.entity.Refrigerator;
import com.wyix.entity.TV;

/**
 * 语音助手：通过父类引用控制任意家电（无需关心具体类型）
 *
 * @author wangdx
 * @since 2025/8/1
 */
public class VoiceAssistant {
    // 批量控制家电：接收Appliance数组（父类引用指向子类对象）
    public void controlAppliances(Appliance[] appliances) {
        for (Appliance appliance : appliances) {
            System.out.println("\n===== 控制" + appliance.getName() + " =====");
            appliance.powerOn();    // 多态调用：编译时看Appliance，运行时看具体子类
            appliance.adjust(getRandomParameter(appliance)); // 根据家电类型动态传参
            appliance.powerOff();
        }
    }

    // 模拟根据家电类型生成调节参数（实际场景由语音识别生成）
    private String getRandomParameter(Appliance appliance) {
        if (appliance instanceof TV) {
            return "CCTV-1"; // 电视调频道
        } else if (appliance instanceof AirConditioner) {
            return "24";     // 空调调温度
        } else if (appliance instanceof Refrigerator) {
            return "快速制冷"; // 冰箱调模式
        }
        return "";
    }

    // 测试：创建不同家电，通过语音助手统一控制
    public static void main(String[] args) {
        Appliance[] homeAppliances = {
                new TV("客厅电视"),
                new AirConditioner("主卧空调"),
                new Refrigerator("厨房冰箱")
        };

        VoiceAssistant assistant = new VoiceAssistant();
        assistant.controlAppliances(homeAppliances);
    }
}